package com.dys.test04;

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * @className: com.dys.test04.SimpleDateFormatTest
 * @description: com.dys.test04
 * @author: pine cone
 * @version: v1.0.0
 * @createTime: 2024/07/24 下午9:00
 */
public class SimpleDateFormatTest {

    /**
     * 这是一个main()方法,是应用程序的入口
     *
     * @param args 方法的形参列表,是一个字符串数组,包含了从命令行传递给程序的参数
     */
    public static void main(String[] args) {

        new SimpleDateFormatTest().testSimpleDateFormat();
    }

    /**
     * 前端传递字符串类型的日期
     * 分解：(1)先将String--->java.sql.Date  (2)将java.sql.Date--->java.util.Date
     */
    public void testStringToDate() {

        // 前端传递的字符串
        // String dateStr = "2015-11-11 12:34:56"; //带时间的无法转换成功
        // String dateStr = "2024-11-11";
        String dateStr = "2024/11/11"; // /无法转换成功，有局限性 IllegalArgumentException

        // String--->sql.Date
        java.sql.Date sqlDate = java.sql.Date.valueOf(dateStr);
        // java.sql.Date ---> java.util.Date
        java.util.Date utilDate = sqlDate;
        System.out.println(utilDate.toString());
    }

    /**
     * 日期转换类
     */
    public void testSimpleDateFormat() {

        DateFormat dateFormat1 = new SimpleDateFormat("yyyyMM-dd HH:mm:ss");
        DateFormat dateFormat2 = new SimpleDateFormat("yyyyMMdd HH:mm:ss");
        DateFormat dateFormat3 = new SimpleDateFormat("yyyy年MM月dd日 下午HH:mm:ss");
        DateFormat dateFormat4 = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
        DateFormat dateFormat5 = new SimpleDateFormat("yy/MM/dd HH:mm:ss");
        try {
            // String ---> Date 将字符串转为日期类型
            Date parseDate = dateFormat1.parse("2024-11-11 15:23:33");
            System.out.println(parseDate);
            System.out.println(parseDate.toString());
            System.out.println(parseDate.toLocaleString());
            System.out.println(parseDate.toGMTString());

            // String ---> Date
            Date strParseDate = dateFormat2.parse("20241111 15:23:33");
            System.out.println("字符串转为日期格式: " + strParseDate.toLocaleString());

            Date strParseDate2 = dateFormat3.parse("2023年11月11日 下午15:23:33");
            System.out.println("字符串转为日期: " + strParseDate2.toLocaleString());

            Date parse = dateFormat4.parse("2024/3/23 12:23:33");
            System.out.println("字符串转为日期4: " + parse.toLocaleString());

        } catch (ParseException e) {
            e.printStackTrace();
        }
        // 2.将Date --> String
        String dateFormatStr = dateFormat1.format(new Date());
        System.out.println(dateFormatStr);
    }
}
